#ifndef _COOLANGAGE_MESVISITEURS_H_
#define _COOLANGAGE_MESVISITEURS_H_

#include "VisitorExpression.h"

namespace COOLangage {

  class UselessVisitorResult : public VisitorResult {
    
  };

  class UselessVisitorExpression : public VisitorExpression {
  public:
    UselessVisitorExpression() : VisitorExpression() { }
    ~UselessVisitorExpression() throw() { }

        
    VisitorResult visitExpression(Expression *e) { 
      std::cout<<"Visit Expression"<<std::endl;
      return UselessVisitorResult();
    }
    
    VisitorResult visitAppel(Appel *app)  { 
      std::cout<<"Visit appel"<<std::endl;
      return UselessVisitorResult();
    }

    VisitorResult visitLitEntier(LitEntier *ope) { 
      std::cout<<"Visit Entier"<<std::endl;
      return UselessVisitorResult();
    }
    
    VisitorResult visitLitFlottant(LitFlottant *ope) { 
      std::cout<<"Visit flottant"<<std::endl;
      return UselessVisitorResult();
    }
    
    VisitorResult visitVariable(Variable *var) {
      std::cout<<"Visit Variable"<<std::endl;
      return UselessVisitorResult();
    }
    
    
    VisitorResult visitOperateur(Operateur *ope) { 
      std::cout<<"Visit Operateur"<<std::endl;
      return UselessVisitorResult();
    }
    
    VisitorResult visitOperateurUnaire(OperateurUnaire *ope) { 
      std::cout<<"Visit Operateur Unaire"<<std::endl;
      return UselessVisitorResult();
    }
    
    VisitorResult visitOperateurBinaire(OperateurBinaire *ope) {     
      std::cout<<"Visit ope. binaire"<<std::endl;
      return UselessVisitorResult();
    }
  };
}

#endif
